/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package DAO;

import Fachada.Fachada;
import LogicaNegocio.*;
import java.sql.*;
import java.util.Calendar;
import java.util.Vector;

/**
 *
 * @author juancate
 */
public class DAOPedido {

    Fachada fachada;

    public DAOPedido() {
        fachada = new Fachada();    
    }

    public int guardarPedido(Pedido pedido)
    {
        Calendar cal = Calendar.getInstance();
        String fechaActual = cal.get(Calendar.DAY_OF_MONTH) + "/" + (cal.get(Calendar.MONTH)+1) + "/" + cal.get(Calendar.YEAR);
        

        String sql_guardar;
        sql_guardar="INSERT INTO Pedido VALUES" +
                    "('" + pedido.getCliente()+"','"+pedido.getIdOrden()+"','" +
                    pedido.getIdArticulo()+"', '" + fechaActual + "')";

        try
        {
            Connection conexion= fachada.ConexionBaseDatos();
            Statement sentencia=conexion.createStatement();
            int numFilas= sentencia.executeUpdate(sql_guardar);
            conexion.close();
            return numFilas;
        }
        catch(SQLException e)
        {
            System.out.println(e);
        }
        catch(Exception e)
        { System.out.println(e);
        }
        return -1;
    }

    public Vector<String[]> consultarArticulos(String idOrden) {
        Vector<String[]> resultado = new Vector<String[]>();

        String sql_select;
        sql_select = "SELECT  codigo_articulo, nombre_articulo " +
                     "FROM Articulo A " +
                     "WHERE A.codigo_articulo IN (" +
                     "SELECT codigo_articulo FROM Pedido p WHERE p.codigo_entrega = '" + idOrden + "')";

        try
        {
            Connection conn = fachada.ConexionBaseDatos();
            Statement sentencia = conn.createStatement();
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next())
            {
                String[] s = new String[]{ tabla.getString(1) , tabla.getString(2) };
                resultado.addElement(s);
            }
            conn.close();
            System.out.println("Conexion cerrada");
            return resultado;
        }
        catch(SQLException e)
        {
            System.out.println(e);
            return null;
        }
        catch(Exception e)
        {
            System.out.println(e);
            return null;
        }
    }

    public Vector<Pedido> consultarPedidosPorRepresentante(String inicio, String fin) {
        String sql_select;
        sql_select =  "SELECT cc_empleado, COUNT(*) AS Cantidad" +
                    " FROM" +
                    " Pedido, "+
                    "("+
                        "SELECT o.cc_empleado AS cc_empleado, o.codigo_entrega AS cod "+
                        "FROM OrdenEntrega o, Empleado e " +
                        "WHERE o.cc_empleado = e.cc_empleado" +
                    ") " +
                    "WHERE cod = Pedido.codigo_entrega AND fecha_pedido BETWEEN '" + inicio +"' AND '" + fin +"' GROUP BY cc_empleado";
        Vector <Pedido> losPedidos = new Vector <Pedido>();

        try
        {
            Connection conn = fachada.ConexionBaseDatos();
            Statement sentencia = conn.createStatement();
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next())
            {
                Pedido elpedido = new Pedido(tabla.getString(1),tabla.getString(2), "");
                losPedidos.addElement(elpedido);
            }
            conn.close();
            System.out.println("Conexion cerrada");
            return losPedidos;
        }
        catch(SQLException e)
        {
            System.out.println(e);
            return null;
        }
        catch(Exception e)
        {
            System.out.println(e);
            return null;
        }
    }

    public Vector<Pedido> consultarPedidosPorPeriodo(String inicio, String fin) {
        String sql_select;
        sql_select =  "SELECT fecha_pedido, COUNT(*) AS Cantidad" +
                    " FROM" +
                    " Pedido "+
                    "WHERE fecha_pedido BETWEEN '" + inicio +"' AND '" + fin +"' GROUP BY fecha_pedido";
        Vector <Pedido> losPedidos = new Vector <Pedido>();

        try
        {
            Connection conn = fachada.ConexionBaseDatos();
            Statement sentencia = conn.createStatement();
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next())
            {
                Pedido elpedido = new Pedido(tabla.getString(1),tabla.getString(2) , "");
                losPedidos.addElement(elpedido);
            }
            conn.close();
            System.out.println("Conexion cerrada");
            return losPedidos;
        }
        catch(SQLException e)
        {
            System.out.println(e);
            return null;
        }
        catch(Exception e)
        {
            System.out.println(e);
            return null;
        }
    }
}
